package com.liuyz.inputstream_;

import org.junit.Test;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class 缓冲字节输入流 {

    // 一个一个字节的进行读取
    @Test
    public void read_1() {
        String filePath = "d:\\test.txt";
        BufferedInputStream inputStream = null;
        byte[] byteArr = new byte[1024];
        int readLength = 0;
        try {
            inputStream = new BufferedInputStream(new FileInputStream(filePath));
            // read(byte[] b)：读取byteArr长度的字节数到byteArr
            // 第二次循环读取到的是第二次的内容，会覆盖掉第一次读取
            // 如果刚好在末尾读取到了中文字符的中间字节，那么就会造成乱码
            // 如果返回是-1则说明文件读取到末尾
            while ((readLength = inputStream.read(byteArr)) != -1) {
                // 将byteArr这个字节数组转换为当前长度的字符串
                System.out.print(new String(byteArr, 0, readLength));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != inputStream) {
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}
